Method and system for customizing a user interface to an on-demand database service

ABSTRACT

In embodiments, methods and systems for customizing a user interface to an on-demand database service. These mechanisms and methods for customizing a user interface to an on-demand database service can enable embodiments to provide a user interface designed by a tenant of the on-demand database service. The customization can include including third party content into the customized user interface, overriding a standard object, and providing content inline at a specified location.

CLAIM OF PRIORITY

This application claims the benefit of U.S. Provisional Application Ser.No. 60/828,005 entitled “METHOD AND SYSTEM FOR CUSTOMIZING A USERINTERFACE TO AN ON-DEMAND DATABASE SERVICE,” by Allan Ballard et al.,filed Oct. 3, 2006 (Attorney Docket No. 021735-003500US), the entirecontents of which are incorporated herein by reference.

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains materialwhich is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent file or records, but otherwise reserves all copyrightrights whatsoever.

FIELD OF THE INVENTION

The current invention relates generally to customizing a user interface,and more particularly to customizing a user interface to an on-demanddatabase service.

BACKGROUND

The subject matter discussed in the background section should not beassumed to be prior art merely as a result of its mention in thebackground section. Similarly, a problem mentioned in the backgroundsection or associated with the subject matter of the background sectionshould not be assumed to have been previously recognized in the priorart. The subject matter in the background section merely representsdifferent approaches, which in and of themselves may also be inventions.

In conventional database systems, users access their data resources inone logical database. A user of such a conventional system typicallyretrieves data from and stores data on the system using the user's ownsystems. A user system might remotely access one of a plurality ofserver systems that might in turn access the database system. Dataretrieval from the system might include the issuance of a query from theuser system to the database system. The database system might processthe request for information received in the query and send to the usersystem information relevant to the request.

Changes to the interface with such a conventional interface aretypically made by the information systems (IS) department, whichmaintains the database. However, in an on-demand database service thatis hosted by another entity and/or that has multiple tenants, such amodel of implementing customized changes does not provide the ease ofuse and flexibility demanded by today's customers.

Accordingly, it is desirable to provide techniques enabling flexiblecustomization of the user interface to improve the ease of use of theon-demand database service.

BRIEF SUMMARY OF INVENTION

In accordance with embodiments, there are provided mechanisms andmethods for customizing a user interface to an on-demand databaseservice. These mechanisms and methods for customizing a user interfaceto an on-demand database service can enable embodiments to provide auser interface designed by a tenant of the on-demand database service.The customization can include including 3^(rd) party content into thecustomized user interface, overriding a standard object, and providingcontent inline at a specified location. The ability of embodiments toprovide customized user interfaces can enable a business (tenant) thefreedom to have its employees access data from the on-demand databaseservice in a convenient, robust, and efficient manner suited for theneeds of that particular business.

In an embodiment and by way of example, a method for customizing a userinterface to an on-demand database service that is subscribed to by aplurality tenants is provided. Each tenant has one or more users. One ormore definitions of a customization of a user interface are receivedfrom a first of a plurality of tenants. At least one of the definitionsincludes a reference to content not stored in the on-demand database.The definitions are associated with information that is specific to thefirst tenant and that is stored in the on-demand database. A request forat least a portion of the information is received from a user of thefirst tenant. A user interface modified according to the definitions issent to the user such that a customized user interface that includes acombination of the referenced content and the requested information isdisplayed to the user. In one embodiment, the referenced content isretrieved and combined with the tenant-specific information to form themodified user interface.

In another embodiment and by way of example, a method includesreceiving, from a first of a plurality of tenants, one or moredefinitions of a customization of a user interface; and associating thedefinitions with information that is specific to the first tenant andthat is stored in the on-demand database. At least one of thedefinitions defines an action on data in the on-demand database service.The at least one definition defining an action on data in the on-demanddatabase service is bound to a pre-defined object that is standard tothe user interface and that is displayed as part of the user interfacewhen at least a portion of the information is displayed. The bindingoverrides a previous functionality of the pre-defined object. A requestfor at least a portion of the information is received from a user. Auser interface modified according to the definitions is sent to theuser. An activation of the pre-defined object is received. The definedaction is then performed on the data. In one embodiment, the action is aquery on the data in the on-demand database service.

In another embodiment and by way of example, a method includesreceiving, from a first of a plurality of tenants, one or moredefinitions of a customization of a user interface. At least one of thedefinitions includes a reference to content. The definitions areassociated with information that is specific to the first tenant andthat is stored in the on-demand database. An indication of a locationwhere the referenced content is to appear on a particular page of theuser interface is received. A request for at least a portion of theinformation is received from the user. A user interface modifiedaccording to the definitions is sent to the user such that a customizeduser interface that includes a combination of the referenced content andthe requested information is displayed to the user. The referencedcontent is displayed at the indicated location. In one embodiment, theindication of the location is received from a pointing device.

Other embodiments of the invention are directed to systems and computerreadable media associated with methods described herein, as well asmethods for transmitting program code for creating the computer readablemedium and/or cause one or more processors to perform methods describedherein.

According to one aspect of the present invention, a method is providedfor customizing a user interface to an on-demand database service. Themethod typically includes receiving at least one definition of a userinterface customization embodied as an Scontrol, associating the atleast one definition with user specific information in the on-demanddatabase service, and presenting a user interface modified according tothe at least one definition when a user having access to the userinterface customization accesses the user interface.

Reference to the remaining portions of the specification, including thedrawings and claims, will realize other features and advantages of thepresent invention. Further features and advantages of the presentinvention, as well as the structure and operation of various embodimentsof the present invention, are described in detail below with respect tothe accompanying drawings. In the drawings, like reference numbersindicate identical or functionally similar elements.

BRIEF DESCRIPTION OF THE DRAWINGS

In the following drawings, like reference numbers indicate identical orfunctionally similar elements. Although the following figures depictvarious examples of the invention, the invention is not limited to theexamples depicted in the figures.

FIG. 1 illustrates a block diagram of an environment wherein anon-demand database service might be used.

FIG. 2 illustrates a block diagram of an embodiment of elements of FIG.1 and various possible interconnections between these elements.

FIG. 3 is a flowchart of a method for customizing a user interface to anon-demand database service in an embodiment.

FIG. 4 is a block diagram illustrating the operation of the on-demanddatabase service when customizing a user interface in an embodiment.

FIG. 5 shows a window for defining an Scontrol in an embodiment.

FIG. 6 illustrates examples of how an Scontrol may be applied tocustomize a user interface in an embodiment.

FIG. 7 is a flow diagram illustrating a method for overriding afunctionality of a standard button to provide a customized userinterface for an on-demand database service in an embodiment.

FIG. 8 is a flow diagram of a method for providing an inlinecustomization of a user interface for an on-demand database service inan embodiment.

FIG. 9 is a block diagram illustrating the operation of the on-demanddatabase service when customizing a user interface to combine externalcontent in an embodiment.

FIG. 10 is a block diagram 1000 illustrating the interaction of anon-demand database service with a user system that creates a customizeduser interface in an embodiment.

FIG. 11 shows a user interface for tracking Scontrols in an embodiment.

DETAILED DESCRIPTION OF THE INVENTION General Overview

Systems and methods are provided for controlling access to customobjects in a database system. These techniques for customizing a userinterface allow each tenant of an on-demand database service accordingto their own needs.

As used herein, the term multi-tenant database system refers to thosesystems in which various elements of hardware and software of thedatabase system may be shared by one or more customers. For example, agiven application server may simultaneously process requests for a greatnumber of customers, and a given database table may store rows for apotentially much greater number of customers. As used herein, the termquery plan refers to a set of steps used to access information in adatabase system.

Next, mechanisms and methods for providing controlling access to customobjects in a database system will be described with reference to exampleembodiments.

System Overview

FIG. 1 illustrates a block diagram of an environment 10 wherein anon-demand database service might be used. Environment 10 may includeuser systems 12, network 14, system 16, processor system 17, applicationplatform 18, network interface 20, tenant data storage 22, system datastorage 24, program code 26, and process space 28. In other embodiments,environment 10 may not have all of the components listed and/or may haveother elements instead of, or in addition to, those listed above.

Environment 10 is an environment in which an on-demand database serviceexists. User system 12 may be any machine or system that is used by auser to access a database user system. For example, any of user systems12 can be a handheld computing device, a mobile phone, a laptopcomputer, a work station, and/or a network of computing devices. Asillustrated in FIG. 1 (and in more detail in FIG. 2) user systems 12might interact via a network 14 with an on-demand database service,which is system 16.

An on-demand database service, such as system 16, is a database systemthat is made available to outside users that do not need to necessarilybe concerned with building and/or maintaining the database system, butinstead may be available for their use when the users need the databasesystem (e.g., on the demand of the users). Some on-demand databaseservices may store information from one or more tenants stored intotables of a common database image to form a multi-tenant database system(MTS). Accordingly, “on-demand database service 16” and “system 16” willbe used interchangeably herein. A database image may include one or moredatabase objects. A relational database management system (RDMS) or theequivalent may execute storage and retrieval of information against thedatabase object(s). Application platform 18 may be a framework thatallows the applications of system 16 to run, such as the hardware and/orsoftware, e.g., the operating system. In an embodiment, on-demanddatabase service 16 may include an application platform 18 that enablescreation, managing and executing one or more applications developed bythe provider of the on-demand database service, users accessing theon-demand database service via user systems 12, or third partyapplication developers accessing the on-demand database service via usersystems 12.

The users of user systems 12 may differ in their respective capacities,and the capacity of a particular user system 12 might be entirelydetermined by permissions (permission levels) for the current user. Forexample, where a salesperson is using a particular user system 12 tointeract with system 16, that user system has the capacities allotted tothat salesperson. However, while an administrator is using that usersystem to interact with system 16, that user system has the capacitiesallotted to that administrator. In systems with a hierarchical rolemodel, users at one permission level may have access to applications,data, and database information accessible by a lower permission leveluser, but may not have access to certain applications, databaseinformation, and data accessible by a user at a higher permission level.Thus, different users will have different capabilities with regard toaccessing and modifying application and database information, dependingon a user's security or permission level.

Network 14 is any network or combination of networks of devices thatcommunicate with one another. For example, network 14 can be any one orany combination of a LAN (local area network), WAN (wide area network),telephone network, wireless network, point-to-point network, starnetwork, token ring network, hub network, or other appropriateconfiguration. As the most common type of computer network in currentuse is a TCP/IP (Transfer Control Protocol and Internet Protocol)network, such as the global internetwork of networks often referred toas the “Internet” with a capital “I,” that network will be used in manyof the examples herein. However, it should be understood that thenetworks that the present invention might use are not so limited,although TCP/IP is a frequently implemented protocol.

User systems 12 might communicate with system 16 using TCP/IP and, at ahigher network level, use other common Internet protocols tocommunicate, such as HTTP, FTP, AFS, WAP, etc. In an example where HTTPis used, user system 12 might include an HTTP client commonly referredto as a “browser” for sending and receiving HTTP messages to and from anHTTP server at system 16. Such an HTTP server might be implemented asthe sole network interface between system 16 and network 14, but othertechniques might be used as well or instead. In some implementations,the interface between system 16 and network 14 includes load sharingfunctionality, such as round-robin HTTP request distributors to balanceloads and distribute incoming HTTP requests evenly over a plurality ofservers. At least as for the users that are accessing that server, eachof the plurality of servers has access to the MTS' data; however, otheralternative configurations may be used instead.

In one embodiment, system 16, shown in FIG. 1, implements a web-basedcustomer relationship management (CRM) system. For example, in oneembodiment, system 16 includes application servers configured toimplement and execute CRM software applications as well as providerelated data, code, forms, web pages and other information to and fromuser systems 12 and to store to, and retrieve from, a database systemrelated data, objects, and Webpage content. With a multi-tenant system,data for multiple tenants may be stored in the same physical databaseobject, however, tenant data typically is arranged so that data of onetenant is kept logically separate from that of other tenants so that onetenant does not have access to another tenant's data, unless such datais expressly shared. In certain embodiments, system 16 implementsapplications other than, or in addition to, a CRM application. Forexample, system 16 may provide tenant access to multiple hosted(standard and custom) applications, including a CRM application. User(or third party developer) applications, which may or may not includeCRM, may be supported by the application platform 18, which managescreation, storage of the applications into one or more database objectsand executing of the applications in a virtual machine in the processspace of the system 16.

One arrangement for elements of system 16 is shown in FIG. 1, includinga network interface 20, application platform 18, tenant data storage 22for tenant data 23, system data storage 24 for system data 25 accessibleto system 16 and possibly multiple tenants, program code 26 forimplementing various functions of system 16, and a process space 28 forexecuting MTS system processes and tenant-specific processes, such asrunning applications as part of an application hosting service.Additional processes that may execute on system 16 include databaseindexing processes.

Several elements in the system shown in FIG. 1 include conventional,well-known elements that are explained only briefly here. For example,each user system 12 could include a desktop personal computer,workstation, laptop, PDA, cell phone, or any wireless access protocol(WAP) enabled device or any other computing device capable ofinterfacing directly or indirectly to the Internet or other networkconnection. User system 12 typically runs an HTTP client, e.g., abrowsing program, such as Microsoft's Internet Explorer browser,Netscape's Navigator browser, Opera's browser, or a WAP-enabled browserin the case of a cell phone, PDA or other wireless device, or the like,allowing a user (e.g., subscriber of the multi-tenant database system)of user system 12 to access, process and view information, pages andapplications available to it from system 16 over network 14. Each usersystem 12 also typically includes one or more user interface devices,such as a keyboard, a mouse, trackball, touch pad, touch screen, pen orthe like, for interacting with a graphical user interface (GUI) providedby the browser on a display (e.g., a monitor screen, LCD display, etc.)in conjunction with pages, forms, applications and other informationprovided by system 16 or other systems or servers. For example, the userinterface device can be used to access data and applications hosted bysystem 16, and to perform searches on stored data, and otherwise allow auser to interact with various GUI pages that may be presented to a user.As discussed above, embodiments are suitable for use with the Internet,which refers to a specific global internetwork of networks. However, itshould be understood that other networks can be used instead of theInternet, such as an intranet, an extranet, a virtual private network(VPN), a non-TCP/IP based network, any LAN or WAN or the like.

According to one embodiment, each user system 12 and all of itscomponents are operator configurable using applications, such as abrowser, including computer code run using a central processing unitsuch as an Intel Pentium® processor or the like. Similarly, system 16(and additional instances of an MTS, where more than one is present) andall of their components might be operator configurable usingapplication(s) including computer code to run using a central processingunit such as processor system 17, which may include an Intel Pentium®processor or the like, and/or multiple processor units. A computerprogram product embodiment includes a machine-readable storage medium(media) having instructions stored thereon/in which can be used toprogram a computer to perform any of the processes of the embodimentsdescribed herein. Computer code for operating and configuring system 16to intercommunicate and to process web pages, applications and otherdata and media content as described herein are preferably downloaded andstored on a hard disk, but the entire program code, or portions thereof,may also be stored in any other volatile or non-volatile memory mediumor device as is well known, such as a ROM or RAM, or provided on anymedia capable of storing program code, such as any type of rotatingmedia including floppy disks, optical discs, digital versatile disk(DVD), compact disk (CD), microdrive, and magneto-optical disks, andmagnetic or optical cards, nanosystems (including molecular memory ICs),or any type of media or device suitable for storing instructions and/ordata. Additionally, the entire program code, or portions thereof, may betransmitted and downloaded from a software source over a transmissionmedium, e.g., over the Internet, or from another server, as is wellknown, or transmitted over any other conventional network connection asis well known (e.g., extranet, VPN, LAN, etc.) using any communicationmedium and protocols (e.g., TCP/IP, HTTP, HTTPS, Ethernet, etc.) as arewell known. It will also be appreciated that computer code forimplementing embodiments of the present invention can be implemented inany programming language that can be executed on a client system and/orserver or server system such as, for example, C, C++, HTML, any othermarkup language, Java™, JavaScript, ActiveX, any other scriptinglanguage, such as VBScript, and many other programming languages as arewell known may be used. (Java™ is a trademark of Sun Microsystems,Inc.).

According to one embodiment, each system 16 is configured to provide webpages, forms, applications, data and media content to user (client)systems 12 to support the access by user systems 12 as tenants of system16. As such, system 16 provides security mechanisms to keep eachtenant's data separate unless the data is shared. If more than one MTSis used, they may be located in close proximity to one another (e.g., ina server farm located in a single building or campus), or they may bedistributed at locations remote from one another (e.g., one or moreservers located in city A and one or more servers located in city B). Asused herein, each MTS could include one or more logically and/orphysically connected servers distributed locally or across one or moregeographic locations. Additionally, the term “server” is meant toinclude a computer system, including processing hardware and processspace(s), and an associated storage system and database application(e.g., OODBMS or RDBMS) as is well known in the art. It should also beunderstood that “server system” and “server” are often usedinterchangeably herein. Similarly, the database object described hereincan be implemented as single databases, a distributed database, acollection of distributed databases, a database with redundant online oroffline backups or other redundancies, etc., and might include adistributed database or storage network and associated processingintelligence.

FIG. 2 also illustrates environment 10. However, in FIG. 2 elements ofsystem 16 and various interconnections in an embodiment are furtherillustrated. FIG. 2 shows that user system 12 may include processorsystem 12A, memory system 12B, input system 12C, and output system 12D.FIG. 2 shows network 14 and system 16. FIG. 2 also shows that system 16may include tenant data storage 22, tenant data 23, system data storage24, system data 25, User Interface (UI) 30, Application ProgramInterface (API) 32, PL/SOQL 34, save routines 36, application setupmechanism 38, applications servers 100 ₁-100 _(N), system process space102, tenant process spaces 104, tenant management process space 110,tenant storage area 112, user storage 114, and application metadata 116.In other embodiments, environment 10 may not have the same elements asthose listed above and/or may have other elements instead of, or inaddition to, those listed above.

User system 12, network 14, system 16, tenant data storage 22, andsystem data storage 24 were discussed above in FIG. 1. Regarding usersystem 12, processor system 12A may be any combination of one or moreprocessors. Memory system 12B may be any combination of one or morememory devices, short term, and/or long term memory. Input system 12Cmay be any combination of input devices, such as one or more keyboards,mice, trackballs, scanners, cameras, and/or interfaces to networks.Output system 12D may be any combination of output devices, such as oneor more monitors, printers, and/or interfaces to networks. As shown byFIG. 2, system 16 may include a network interface 20 (of FIG. 1)implemented as a set of HTTP application servers 100, an applicationplatform 18, tenant data storage 22, and system data storage 24. Alsoshown is system process space 102, including individual tenant processspaces 104 and a tenant management process space 110. Each applicationserver 100 may be configured to tenant data storage 22 and the tenantdata 23 therein, and system data storage 24 and the system data 25therein to serve requests of user systems 12. The tenant data 23 mightbe divided into individual tenant storage areas 112, which can be eithera physical arrangement and/or a logical arrangement of data. Within eachtenant storage area 112, user storage 114 and application metadata 116might be similarly allocated for each user. For example, a copy of auser's most recently used (MRU) items might be stored to user storage114. Similarly, a copy of MRU items for an entire organization that is atenant might be stored to tenant storage area 112. A UI 30 provides auser interface and an API 32 provides an application programmerinterface to system 16 resident processes to users and/or developers atuser systems 12. The tenant data and the system data may be stored invarious databases, such as one or more Oracle™ databases.

Application platform 18 includes an application setup mechanism 38 thatsupports application developers' creation and management ofapplications, which may be saved as metadata into tenant data storage 22by save routines 36 for execution by subscribers as one or more tenantprocess spaces 104 managed by tenant management process 110 for example.Invocations to such applications may be coded using PL/SOQL 34 thatprovides a programming language style interface extension to API 32. Adetailed description of some PL/SOQL language embodiments is discussedin commonly owned co-pending U.S. Provisional Patent Application60/828,192 entitled, PROGRAMMING LANGUAGE METHOD AND SYSTEM FOREXTENDING APIS TO EXECUTE IN CONJUNCTION WITH DATABASE APIS, by CraigWeissman, filed Oct. 4, 2006, which is incorporated in its entiretyherein for all purposes. Invocations to applications may be detected byone or more system processes, which manages retrieving applicationmetadata 116 for the subscriber making the invocation and executing themetadata as an application in a virtual machine.

Each application server 100 may be communicably coupled to databasesystems, e.g., having access to system data 25 and tenant data 23, via adifferent network connection. For example, one application server 100 ₁might be coupled via the network 14 (e.g., the Internet), anotherapplication server 100 _(N−1) might be coupled via a direct networklink, and another application server 100 _(N) might be coupled by yet adifferent network connection. Transfer Control Protocol and InternetProtocol (TCP/IP) are typical protocols for communicating betweenapplication servers 100 and the database system. However, it will beapparent to one skilled in the art that other transport protocols may beused to optimize the system depending on the network interconnect used.

In certain embodiments, each application server 100 is configured tohandle requests for any user associated with any organization that is atenant. Because it is desirable to be able to add and remove applicationservers from the server pool at any time for any reason, there ispreferably no server affinity for a user and/or organization to aspecific application server 100. In one embodiment, therefore, aninterface system implementing a load balancing function (e.g., an F5Big-IP load balancer) is communicably coupled between the applicationservers 100 and the user systems 12 to distribute requests to theapplication servers 100. In one embodiment, the load balancer uses aleast connections algorithm to route user requests to the applicationservers 100. Other examples of load balancing algorithms, such as roundrobin and observed response time, also can be used. For example, incertain embodiments, three consecutive requests from the same user couldhit three different application servers 100, and three requests fromdifferent users could hit the same application server 100. In thismanner, system 16 is multi-tenant, wherein system 16 handles storage of,and access to, different objects, data and applications across disparateusers and organizations.

As an example of storage, one tenant might be a company that employs asales force where each salesperson uses system 16 to manage their salesprocess. Thus, a user might maintain contact data, leads data, customerfollow-up data, performance data, goals and progress data, etc., allapplicable to that user's personal sales process (e.g., in tenant datastorage 22). In an example of a MTS arrangement, since all of the dataand the applications to access, view, modify, report, transmit,calculate, etc., can be maintained and accessed by a user system havingnothing more than network access, the user can manage his or her salesefforts and cycles from any of many different user systems. For example,if a salesperson is visiting a customer and the customer has Internetaccess in their lobby, the salesperson can obtain critical updates as tothat customer while waiting for the customer to arrive in the lobby.

While each user's data might be separate from other users' dataregardless of the employers of each user, some data might beorganization-wide data shared or accessible by a plurality of users orall of the users for a given organization that is a tenant. Thus, theremight be some data structures managed by system 16 that are allocated atthe tenant level while other data structures might be managed at theuser level. Because an MTS might support multiple tenants includingpossible competitors, the MTS should have security protocols that keepdata, applications, and application use separate. Also, because manytenants may opt for access to an MTS rather than maintain their ownsystem, redundancy, up-time, and backup are additional functions thatmay be implemented in the MTS. In addition to user-specific data andtenant-specific data, system 16 might also maintain system level datausable by multiple tenants or other data. Such system level data mightinclude industry reports, news, postings, and the like that are sharableamong tenants.

In certain embodiments, user systems 12 (which may be client systems)communicate with application servers 100 to request and updatesystem-level and tenant-level data from system 16 that may requiresending one or more queries to tenant data storage 22 and/or system datastorage 24. System 16 (e.g., an application server 100 in system 16)automatically generates one or more SQL statements (e.g., one or moreSQL queries) that are designed to access the desired information. Systemdata storage 24 may generate query plans to access the requested datafrom the database.

Each database can generally be viewed as a collection of objects, suchas a set of logical tables, containing data fitted into predefinedcategories. A “table” is one representation of a data object, and may beused herein to simplify the conceptual description of objects and customobjects according to the present invention. It should be understood that“table” and “object” may be used interchangeably herein. Each tablegenerally contains one or more data categories logically arranged ascolumns or fields in a viewable schema. Each row or record of a tablecontains an instance of data for each category defined by the fields.For example, a CRM database may include a table that describes acustomer with fields for basic contact information such as name,address, phone number, fax number, etc. Another table might describe apurchase order, including fields for information such as customer,product, sale price, date, etc. In some multi-tenant database systems,standard entity tables might be provided for use by all tenants. For CRMdatabase applications, such standard entities might include tables forAccount, Contact, Lead, and Opportunity data, each containingpre-defined fields. It should be understood that the word “entity” mayalso be used interchangeably herein with “object” and “table”.

In some multi-tenant database systems, tenants may be allowed to createand store custom objects, or they may be allowed to customize standardentities or objects, for example by creating custom fields for standardobjects, including custom index fields. U.S. patent application Ser. No.10/817,161, filed Apr. 2, 2004, entitled “Custom Entities and Fields ina Multi-Tenant Database System”, and which is hereby incorporated hereinby reference, teaches systems and methods for creating custom objects aswell as customizing standard objects in a multi-tenant database system.In certain aspects, for example, all custom entity data rows are storedin a single multi-tenant physical table, which may contain multiplelogical tables per organization. It is transparent to customers thattheir multiple “tables” are in fact stored in one large table or thattheir data may be stored in the same table as the data of othercustomers.

Embodiments provide further customization features. Not all of thetenants may want to view and access data in the same way. Additionally,tenants may want to include content, such as additional account data,images, or any other data, in the user interface that the users of thattenant are able to see. Such customization are explained in detailbelow.

User Interface Customizations

As each tenant may be performing a different type of business, which canentail different types of data and needs, each tenant may want to changea standard user interface differently. By way of example, a tenant or aspecific user of the tenant may want a little different look, differentset of controls, and/or extra actions.

FIG. 3 is a flowchart of a method 300 for customizing a user interfaceto an on-demand database service in an embodiment. In step 310, theon-demand database service, such as system 16, receives one or moredefinitions of a customization of a user interface from a tenant. Thedefinitions may be received in any suitable format (e.g. interactiveapplication or file upload) and across any suitable medium or networkconnection, e.g. using the Internet.

In one embodiment, at least one of the definitions includes a referenceto content, which may not be stored in the on-demand database. By way ofexample, the content may include account information stored at atenant's server and/or may include one or more images (such as a map),stock information, reports, or other data that is stored at a server ofa third party. In one aspect, a container (herein termed an Scontrol)contains the definitions for a particular customization. In anotherembodiment, at least one of the definitions defines a query for data tobe retrieved from the on-demand database service

In step 320, the definitions are associated with information that isspecific to the tenant and that is stored in the on-demand database. Inone aspect, the definitions are associated to information that thedefinition directly references. In another aspect, the association ofthe information may be based on a relation between the locations of thedefinitions and the information as they are to appear in a customizeduser interface displayed to an end user. Such a relation may be done forinlining, which will be described in detail later.

In step 330, a request is received, from a user, for at least a portionof the information. In one embodiment, the request is made by an actionthat pulls up a main page for the user. The information can be any ofthe information normally associated with the unmodified user interface.In another embodiment, the request is made with a query to the databasefor certain data. By way of example, such a request may be made using acustom or overridden button.

In step 340, the on-demand database service sends, to the user, a userinterface modified according to the definitions. In one embodiment, as aresult, a customized user interface that includes a combination ofreferenced content and the requested information is displayed to theuser. The combining of the referenced content and the requestedinformation may be done at a user's device or at the on-demand server,or a combination of the two.

FIG. 4 is a block diagram 400 illustrating the operation of theon-demand database service when customizing a user interface in anembodiment. The operation of method 300 is now described in relation todiagram 400.

An administrator 410 creates one or more definitions of a customizationof the user interface of tenant 420. In one embodiment, the definitionsare input into a single container, such as an Scontrol 430. An S-controlis a generic container for content, such as web-based content. In thiscase, an administrator is any user that has rights to define anScontrol. An administrator would typically be a worker in the ISdepartment of tenant 420.

Scontrol 430 is sent from a system of the administrator 410 to adatabase system 416 (such as system 16), e.g. during step 310 of method300. In one embodiment, the Scontrol is placed within or interacts withthe program code 26 that can generate a user interface the on-demanddatabase service. In one aspect, Scontrol 430 may be placed withinprogram code 26 at a particular point. In another aspect, Scontrol 430may reside within a module 440 holding all Scontrols, and only areference to the Scontrol is placed at a particular point in programcode 26. Such interaction may happen when a user requests a userinterface that has been modified by the Scontrol. In another embodiment,the Scontrol is placed within another metadata database of system 416 orwithin a cache server of system 416.

FIG. 5A shows a window 500 for defining an Scontrol in an embodiment.Edit page 500 of FIG. 5 may be used by the administrator 410 to createthe Scontrol. A label 510 signifying a common usage for the Scontrol maybe defined. The label may reflect translations into other languages. Aname 520 as used by the software code may be used to reference the codeand distinguish it from other Scontrols.

In one embodiment, the Scontrol may be defined to be of types: HTMLcode, a URL, or a snippet, which is a reference to other code.Administrator 410 can enter HTML code or a URL directly in content box530. Pick (pulldown) lists such as a select field type or insert fieldmay be used to easily bring up a definition or link to certain tenantdata, e.g., to which the Scontrol may be associated. Picklists forinserting a snippet allow the insertion of previously defined code (suchas HTML, Javascript, other machine independent code, or other code) tobe inserted into a content box 530 or otherwise used as the Scontrol. Inthis manner, an Scontrol (or essentially a reference to an Scontrol)that is written once can be easily be inserted or incorporated intoother Scontrols. Thus, a change in the Scontrol gets propagated to allplaces that a reference (or Snippet) appears.

Referring back to FIG. 4, once the Scontrol is received by system 16,the Scontrol can be associated with certain tenant-specific data, e.g.in step 320 of method 300. In the example shown, information 450 oftenant 420 that is stored in the tenant data storage is associated withScontrol 430. The information may be, for example, all or some of theinformation of a specific account, which may appear on an account detailpage. In one aspect, the data storage of tenant 420 is placed within thetenant storage 22.

In one aspect, which data is associated depends upon the definition ofthe Scontrol. For example, the Scontrol may access certain field fieldsand field types. In another aspect, which data is associated dependsupon how the Scontrol is to be applied. For example, an Scontrol mayremove a button that is associated with certain information. In oneembodiment, the association is where to put the customization in a page,such as detail page.

A user system 412, such as user systems 12, sends a request 470, whichis received by the database system 416. In one aspect, the requestinvolves the information 450. For example, a user may want to view aparticular account detail page, or view a list that is created byactivating a button. In another aspect, the request is initiated by auser that is operating user system 412.

The database system 416 receives the request and modifies a userinterface using an Scontrol associated with information 450 to create amodified user interface 480. The modified user interface 480 is sent tothe user system 412 so that the user interface as customized by thedefinitions is displayed to the user. Examples of how a user interfacecan be customized will now be discussed.

FIG. 6 illustrates examples of how an Scontrol may be applied tocustomize a user interface in an embodiment. Examples of customizationinclude inline customization, custom buttons, removal of standardbuttons, and the overriding of standard buttons.

Scontrols 610 a and 610 b are implemented as inline customization in apage. For example, the content within or referenced by an Scontrol canbe applied or placed anywhere inline in a detail page 600. Content 610 ais a map showing a place of business of an account Acme. In oneembodiment, a mechanism is provided for specifying exactly where theinline content can be added into contact page. Such a mechanism mayinclude defining a box or simply a point with a pointer or via commands.

As another example, the Scontrol can also be applied inline to adashboard, which is a page or part of a page that supports graphs andother pictorials about a chosen entity. For, example an Scontrol usedfor inserting an up-to-date stock chart 610 b on a specified company.Thus, an Scontrol can be used to add pieces to existing pages, displaynew section with new data, display old section with new data, or removedata that they did not want

In another embodiment, the Scontrol can also be applied to pre-definedtypes of objects, such as a button. For example, an Scontrol can be usedto create custom buttons 620. A detail page header/footer, related list,and add to list view are examples of places that a button may be added.In one aspect, a new button is added to the right of the standardbuttons.

The customization may be used for presenting, for example, content froma specified URL of a third party or results of a specific query on thetenant's data stored in the on-demand database. As such, custom button620 b can be used to provide a query that returns a list as defined bythe tenant, and similarly for custom buttons 620 a. Accordingly, anScontrol can define a behavior on a single object OR on multiple objectsas appearing in a list.

A button may also be removed, e.g. button 630, or have its functionalitychanged or overridden. A detail page header/footer, a related list, anda list view are examples of places that a button may be removed.Removing a button may be done, for example, when a particular user orgroup of users are to not be allowed to access some features or data, orwhen a tenant does not have a need for a standard button. In oneembodiment, the removing is done by hiding the button in the userinterface, and does not disable the functionality.

An Scontrol can also override the functionality of a standard button, anentire page, such as a detail page, a user's home page, or any otherstandard page. In one embodiment, clicking on an overridden or addedbutton displays Scontrol (such as URL) or runs the Scontrol (such asOnClick JavaScript). In another embodiment, activating an Scontrol cantake an action on one record (e.g. Validate Address), create multiplerecords (e.g. Mass Task Create) and take an action on multiple records(e.g. Re-Open Cases). The custom button may work in conjunction withother features. For example, a custom or overridden list button can takethe defined action on all of the selected rows.

In one embodiment, as for overriding a button, one can override thestandard actions (such as New, Edit, View, Delete) and Override “massactions” on lists (e.g. Add to Campaign, Add Products, Close cases).Overriding a button may be advantageous to “interrupt” standard pageflow (e.g. to search for New Accounts) to override with new userinterface interaction (e.g. to Drag & drop to add products).

Other examples of expanded functionality of buttons include mapping allrelated accounts using SOQL Relationships, opportunity summary, andsales vs. quota (e.g. dashboard components using Flash-based Scontrols).Advantages of the expanded functionality described herein includeEliminating manual order processing, centralizing forecasting, andcreating on-demand pipeline visibility.

FIG. 7 is a flow diagram illustrating a method 700 for overriding afunctionality of a standard button to provide a customized userinterface for an on-demand database service in an embodiment. In step710, the on-demand database service, such as system 16, receives one ormore definitions of a customization of a user interface from a tenant.In step 720, the definitions are associated with information that isspecific to the tenant and that is stored in the on-demand database. Atleast one of the definitions defines an action on data in the on-demanddatabase service.

In step 730, at least one definition defining an action on data in theon-demand database service is bound to a standard button that isdisplayed as part of the user interface when at least a portion of theinformation is displayed. The binding of the definition effectivelyoverrides the functionality of the standard button.

In step 740, a request for at least a portion of the information isreceived from the user. In step 750, a user interface modified accordingto the definitions is sent to the user, or equivalently a system beingused by the user. In step 760, an activation of the standard button isreceived. For example, one may activate the button by clicking on to it.In step 770, the defined action on the data is performed by theon-demand database service.

FIG. 8 is a flow diagram of a method 800 for providing an inlinecustomization of a user interface for an on-demand database service inan embodiment. In step 810, the on-demand database service, such assystem 16, receives one or more definitions of a customization of a userinterface from a tenant. At least one of the definitions includes areference to content. In step 820, the definitions are associated withinformation that is specific to the tenant and that is stored in theon-demand database.

In step 830, an indication of a location where the referenced content isto appear on a particular page of the user interface is received. Thelocation may be chosen with mechanisms as described above. For example,a cursor may choose a specific point or a region. In step 840, requestfor at least a portion of the information is received from the user.

In step 850, a user interface modified according to the definitions issent to the user such that a customized user interface that includes acombination of the referenced content and the requested information isdisplayed to the user. The customized user interface thus allows forintroduction of the referenced content to be displayed at the indicatedlocation.

FIG. 9 is a block diagram 900 illustrating the operation of an on-demanddatabase service when customizing a user interface to combine externalcontent in an embodiment. As discussed previously, an Scontrol 930 issubmitted to the on-demand database system 916. The Scontrol can then beassociated with information 950. Once a request 970 is received fromuser system 912, the system 916 can then send a modified user interface980. In an embodiment, the on-demand database service combines theexternal content with the information 950 for sending as the modifieduser interface 980.

In one embodiment, the Scontrol 930 contains a reference to content 910at the tenant's server 990. In one aspect, such content is HTML or othercode. The code when combined with information 950, and potentially someof program code 26, from the on-demand database can create at least partof the customized user interface. Thus, essentially in practice, atenant may have an application running on its own server that can accessthe data on the database system, although the access is instigated byfirst accessing the on-demand database service.

In another aspect, the referenced content 910 is account data or otherproprietary data that the tenant 920 prefers to store at the tenantserver 990. Thus, a tenant can aggregate the data stored at theon-demand database system 916 with other data, which may be storedlocally. The access to the tenant's server 990 by system 916 may becontrolled in any number of ways as is known to those skilled in theart.

In another embodiment, the Scontrol retrieves data from a 3rd partyserver 995 for inclusion into the modified user interface 980. Such datacan then be placed, for example, inline into a page of the modified userinterface or bound to the activation of a particular object on the page,such as a button. The modified user interface 980 can then be displayedto the user as customized user interface according to the definitionscreated by tenant 920.

FIG. 10 is a block diagram 1000 illustrating the interaction of anon-demand database service with a user system that creates a customizeduser interface in an embodiment. In this embodiment, the user systemcombines the external data referenced within the user interface 1080 asmodified by the Scontrol 1030.

For example, HTML code that defined part of the user interface maycontain a reference to the external data in the 3^(rd) party server 1095or tenant server 1090. The browser of the user system 1012 can thenretrieve the referenced content 1010 and display the content where thereference appears in the modified user interface 1080.

Many Scontrols may be used throughout a user interface of a particulartenant. There may be times when an administrator or other developer at atenant needs to know how a change to an Scontrol will be propagatedthroughout the user interface. Accordingly, embodiments provide methodsfor tracking such changes.

FIG. 11 shows a user interface for tracking Scontrols in an embodiment.Building a composite UI integrates content and applications fromdifferent sources in a seamless user interface, reducing the time ittakes users to access the information they need to make businessdecisions, reducing the cost of web page development, and improvingproductivity.

The Scontrol detail page 1110 shows detail information for an Scontrollabeled About Vacation Requests. The button 1120 can be used to provideinformation for where this Scontrol is used. Scontrol reference page1130 shows the result obtained from button 1120.

Such tracking of Scontrols allows the ability to identify all of thedefinitions that reference an Scontrol, e.g., for Scontrol Pages (suchas custom HTML Scontrols and URL Scontrols) and for Scontrol Snippets.The tracking also allows for impact analysis when deleting an Scontrol,changing the type of Scontrol, and just figuring out where this Scontrolis currently used.

It should be understood that the present invention as described abovecan be implemented in the form of control logic using computer softwarein a modular or integrated manner. Based on the disclosure and teachingsprovided herein, a person of ordinary skill in the art will know andappreciate other ways and/or methods to implement the present inventionusing hardware and a combination of hardware and software

Any of the software components or functions described in thisapplication, may be implemented as software code to be executed by aprocessor using any suitable computer language such as, for example,Java, C++ or Perl using, for example, conventional or object-orientedtechniques. Computer programs incorporating features of the presentinvention may be encoded on various computer readable media for storageand/or transmission; suitable media include magnetic disk or tape,optical storage media such as compact disk (CD) or DVD (digitalversatile disk), flash memory, and the like. The computer readablemedium may be any combination of such storage or transmission devices.Thus, embodiments also provide methods of transmitting program code toone or more processors for implementing any of the methods mentionherein.

Such programs may also be encoded and transmitted using carrier signalsadapted for transmission via wired, optical, and/or wireless networksconforming to a variety of protocols, including the Internet. As such, acomputer readable medium according to an embodiment of the presentinvention may be created using a carrier signal carrying such programs.Computer readable media encoded with the program code may be packagedwith a compatible device or provided separately from other devices(e.g., via Internet download). Any such computer readable medium mayreside on or within a single computer program product (e.g. a hard driveor an entire computer system), and may be present on or within differentcomputer program products within a system or network.

While the invention has been described by way of example and in terms ofthe specific embodiments, it is to be understood that the invention isnot limited to the disclosed embodiments. To the contrary, it isintended to cover various modifications and similar arrangements aswould be apparent to those skilled in the art. Therefore, the scope ofthe appended claims should be accorded the broadest interpretation so asto encompass all such modifications and similar arrangements.

1. A computer program product, comprising a non-transitory computerusable medium having a computer readable program code embodied therein,the computer readable program code adapted to be executed to implement amethod, the method comprising: receiving, from a first of a plurality oftenants, one or more definitions of a customization of a user interface,wherein at least one of the definitions includes a reference to contentnot stored in an on-demand database; associating the definitions withinformation that is specific to the first tenant and that is stored inthe on-demand database; receiving, from a user of the first tenant, arequest for at least a portion of the information; and sending, to theuser, a user interface modified according to the definitions such that acustomized user interface that includes a combination of the referencedcontent and the requested information is displayed to the user.
 2. Thecomputer program product of claim 1, further comprising: retrieving thereferenced content; and combining the referenced content and thetenant-specific information to form the modified user interface.
 3. Thecomputer program product of claim 1, wherein the reference to thecontent includes a URL.
 4. The computer program product of claim 1,further comprising: determining whether the user has access to therequested tenant-specific information, wherein only the requesteduser-specific information to which the user has access is sent in themodified user interface.
 5. The computer program product of claim 1,wherein at least one of the definitions includes an addition of a custombutton, tab, or link in the user interface.
 6. A method, comprising:receiving, from a first of a plurality of tenants, one or moredefinitions of a customization of a user interface, wherein at least oneof the definitions includes a reference to content not stored in anon-demand database; associating the definitions with information that isspecific to the first tenant and that is stored in the on-demanddatabase; receiving, from a user of the first tenant, a request for atleast a portion of the information; and sending, to the user, a userinterface modified according to the definitions such that a customizeduser interface that includes a combination of the referenced content andthe requested information is displayed to the user
 7. A system,comprising: a processor for: receiving, from a first of a plurality oftenants, one or more definitions of a customization of a user interface,wherein at least one of the definitions includes a reference to contentnot stored in an on-demand database; associating the definitions withinformation that is specific to the first tenant and that is stored inthe on-demand database; receiving, from a user of the first tenant, arequest for at least a portion of the information; and sending, to theuser, a user interface modified according to the definitions such that acustomized user interface that includes a combination of the referencedcontent and the requested information is displayed to the user.